
package br.ita.escolaita.view;


import br.ita.escolaita.ejb.AlunoEjbBeanLocal;
import br.ita.escolaita.ejb.FrequenciaEjbBeanLocal;
import br.ita.escolaita.ejb.TurmaEjbLocal;
import br.ita.escolaita.model.entity.Aluno;
import br.ita.escolaita.model.entity.Disciplina;
import br.ita.escolaita.model.entity.Frequencia;
import br.ita.escolaita.model.entity.Turma;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import javax.ejb.EJB;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Matheus
 * Created on : 07/09/2009, 11:48:18
 * Document   : FrequenciaBean
 */

public class FrequenciaBean {
    @EJB
    private TurmaEjbLocal turmaEjb;
    @EJB
    private AlunoEjbBeanLocal alunoEjb;
    @EJB
    private FrequenciaEjbBeanLocal frequenciaEjb;
    private Turma turma;
    private Set<Disciplina> listaDiciplina;
    private Disciplina disciplinaSelecionada;
    private Date dataSelecionada;
    private List<Aluno> listaAlunosSelecionados;

    public List<SelectItem> getSelectItemTurmas(){
        List<Turma> turmas = turmaEjb.listarTodas();
        List<SelectItem> itens = new ArrayList<SelectItem>();
        for (Turma t: turmas){
            SelectItem item = new SelectItem(t, t.getNome());
            itens.add(item);
        }
        return itens;
    }

    public List<SelectItem> getSelectItemDisciplina(){
        List<SelectItem> itens = new ArrayList<SelectItem>();
        if (listaDiciplina != null){
            for (Disciplina d: listaDiciplina){
                SelectItem item = new SelectItem(d, d.getNome());
                itens.add(item);                
            }
            return itens;
        }
        SelectItem item = new SelectItem("", "Seleciona uma Turma");
        itens.add(item);
        return itens;
    }
    public String recarregaListaDisciplina(){
        listaDiciplina = turma.getSerie().getDisciplina();
        return "ok";
    }

    public String buscarAlunos(){
        listaAlunosSelecionados = alunoEjb.findByTurma(turma);
        return "ok";
    }

    public String voltar() {
        HttpSession ses = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
        ses.removeAttribute("frequenciaBean");
        return "voltar";
    }

    public String darPresenca(){
        if (listaAlunosSelecionados != null){
            Iterator<Aluno> it = listaAlunosSelecionados.iterator();
            Set<Frequencia> listaFrequencia = new TreeSet<Frequencia>();
            while(it.hasNext()){
                Aluno a = it.next();
                Frequencia fre = new Frequencia();
                fre.setAluno(a);
                fre.setDataFrequencia(dataSelecionada);
                if (a.isSelecionado()){
                    fre.setPresente(true);
                } else {fre.setPresente(false);}
                listaFrequencia.add(fre);
                a.setFrequencia(listaFrequencia);
                frequenciaEjb.salvar(fre);
                alunoEjb.alterar(a);
            }
        }
        dataSelecionada = new Date();
        listaAlunosSelecionados = new ArrayList<Aluno>();
        turma = new Turma();
        disciplinaSelecionada = new Disciplina();
        return "sucesso";
    }

    

    public Turma getTurma() {
        return turma;
    }

    public void setTurma(Turma turma) {
        this.turma = turma;
    }

    public Set<Disciplina> getListaDiciplina() {
        return listaDiciplina;
    }

    public void setListaDiciplina(Set<Disciplina> listaDiciplina) {
        this.listaDiciplina = listaDiciplina;
    }

    public Disciplina getDisciplinaSelecionada() {
        return disciplinaSelecionada;
    }

    public void setDisciplinaSelecionada(Disciplina disciplinaSelecionada) {
        this.disciplinaSelecionada = disciplinaSelecionada;
    }

    public Date getDataSelecionada() {
        return dataSelecionada;
    }

    public void setDataSelecionada(Date dataSelecionada) {
        this.dataSelecionada = dataSelecionada;
    }

    public List<Aluno> getListaAlunosSelecionados() {
        return listaAlunosSelecionados;
    }

    public void setListaAlunosSelecionados(List<Aluno> listaAlunosSelecionados) {
        this.listaAlunosSelecionados = listaAlunosSelecionados;
    }

    

    
    
}
